/******************************************************************************
 * \brief	两个进程间使用私有通信协议进行通信，服务器端测试Demo
 * \details	模拟两个嵌入式设备间的主从通信；通信的收和发都有队列缓存
 * \note	轮询，非阻塞，未加延时；在PC上会CPU占用高
 * \remarks	Linux进程间通信：管道pipe/mkfifo（文件读写）、共享内存shmget、
 *			消息队列msgget、信号量semget……
 *			Windows API(Win32 API)进程间通信：管道Pipe、共享内存FileMapping、
 *			邮槽MailSlot、剪贴板Clipboard、套接字Sockets……
 * \note	File format: UTF-8，中文编码：UTF-8
 * \author	将狼才鲸
 * \date	2023-03-04
 ******************************************************************************/

/*********************************** 头文件 ***********************************/
#include "scp_server.h"

#ifdef linux
	/* 当前使用的是Linux的进程间通信机制 */
#elif WIN32
#	error "not support windows currently"
#endif

/*
 * \brief	使用PC的一些机制模拟板子的物理通信链路
 * \details	使用共享内存模拟共享寄存器寄存器的读写；
 *			使用命名管道、套接字Socket、消息队列模拟串口收发；
 */

/*********************************** 主函数 ***********************************/
int main()
{
	scp_handle hscp;

	//TODO: 可自行将scp这个名字全部替换成pcp(private communication protocol)或其它缩写
	pr_dbg("enter scp(self communication protocol) server demo\n");

	/* 初始化系统缓存 */
	qbuf_groups_cfg();

	/* 创建一个通信连接 */
	hscp = scp_init(0, SCP_DEVTYPE_SOCKET);
	/* 服务器端额外的初始化，当前内容为空 */
	scpsrv_init();

	do {
		/* 服务器端轮询响应 */
		scpsrv_run(hscp);
	} while (1);

	/* 退出通信连接 */
	scp_exit(hscp);

	return 0;
}

/*********************************** 文件尾 ***********************************/
